Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
(copio e incollo da un altro forum in cui ho postato la domanda )
spero di non aver scritto cavolate nel titolo ,
purtroppo mi ritrovo con un problema di concetto , essendo passato io da poco a vb.net non ho capito ancora bene come funziona il concetto di delegate ed in generale il concetto di programmazione ad oggetti ( essendo io passato da programmazione ad eventi! ).
Iniziero' a leggere una guida avanzata ( sto leggendo quella di questo sito)
Pero' ... ho poco tempo , prima di rimettermi a studiare per l'universita' dovrei finire il programma, alla svelta ,quindi vi spiego il problema .
Ho trovato del codice in vb6 per utilizzare il mio controller midi per i miei soft .
aiutandomi con degli esempi presi su internet sono riuscito a farlo girare benone su vb.net utilizzando il metodo delegate ... da completo profano . Pero' c'e' un problema , la funzione richiamata dai delegate funziona solo se richiama a sua volta delle sub che caricano poco la cpu , quindi , a volte mi da' l'errore a volte no , sull 'help ho trovato esposta la causa e la soluzione , pero' essendo io alquanto profano in materia , in realta' non ho capito bene ne la causa ne la soluzione , il link e' questo : LINK
ora vi incollo il codice che fa funzionare il mio controller midi come joystick
b = Strings.Left(Strings.Right("00000000"+Hex(a), 6), 4)
c =Int("&H"+ Strings.Right(b, 2))
Call Joystick(c)
EndIf
EndSub
#End Region
la funzione joystick rileva quale tasto e' stato premuto e richiama una funzione del programma
allora il problema e' che dopo aver eseguito una serie di funzioni molto lunghe , richiamate in joystick , alla prima pressione del tasto tutto ok
, esegue le funzioni senza errori ,
quando pero' fatto questo vado a premere un tasto qualsiasi della tastiera midi ( uno qualsiasi , non per forza quello assegnato per eseguire altre funzioni ) , che richiama la funzione delegate di callback ( e0 giusto? ) , questa e' stata chiusa (? non so' perche') e mi appare l'errore CallbackOnCollectedDelegate .
potreste darmi una mano a risolvere il problema ??
grazie 1000
Ultima modifica effettuata da Il Totem il 01/03/2011 alle 11:11
Se il tuo problema è un delegato che viene distrutto prima del necessario, potresti dichiararlo come variabile globale: questo gli assicurerebbe la vita eterna!!! muhahaha!! Almeno finché lo distruggi logicamente.
Codice sorgente - presumibilmente C# / VB.NET
Private midiOpenDelegate As New Memorize_EventCallback(AddressOf MidiIn_Event)
grazie 1000^1000 ... la soluzione era cosi semplice ! intanto mi finisco la tua guida al vb.net - masterz - 01/03/11 15:19